其他
Perl学习04之IO及文件读写
"pythonic生物人"的第9篇分享
摘要
Perl中print say printf sprintf的使用方法;
Perl中格式化输出;
Perl中文件的读写(open函数,文件句柄(file handle))。
目录
say
printf
sprintf
正文开始啦
1、Perl中IO操作
print say printf sprintf区别
print
不自带\n;
say
自带\n,必须结合use 5.010才能使用;
printf
格式化输出字符串;
sprintf
只格式化,无print功能。
Perl格式化输出
Perl主要使用printf及sprintf格式化输出,printf sprintf常用格式符如下:
格式符 含义
%% 百分号
%s 字符串
%d 整型数字
%f 浮点型数字
%e 科学计算法
I/O实例,格式化实例
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
####Author:pythonic生物人###
#print
print "hah\n";
#say
say "hah1";#say自带\n,必须使用use 5.010
#printf
printf "hah2\n";
#%d
printf "%d\n", 3.1415126;#输出整型,3
#输出整型,字符宽度为10,向右对齐,宽度不足用0补齐,默认用空格补齐
printf "%010d\n", 3.1415126;
#%f
printf "%010.2f\n", 3.1415126;
#%010.2f
#0 设置字符宽度补齐字符
#10 设置字符宽度为10
#.2 设置显示2位小数
#f 输出浮点型
#%%
printf "%d%%\n", 3.1415126;#输出百分号
#%e
printf "%010.3e\n", 23450000;
#%s
#输出字符串,字符宽度为10,向右对齐,宽度不足用0补齐,默认用空格补齐
printf "%010s\n", "haha";
#sprintf
my $result = sprintf("%010d",3.1415126);#()内方法类似于printf
print "$result\n";
perl print1.pl
hah
hah1
hah2
3
0000000003
0000003.14
3%
000000haha
0000000003
2、Perl中读写文件操作
#!/usr/bin/perl
use strict;
use warnings;
####Author:pythonic生物人###
my $infile=$ARGV[0];
#open 句柄, <, 待读入文件;
open IN,"<",$infile;
while (<IN>){
chomp;
next if(/^#/);
next if(/^$/);
my @t=split /\t/,$_;
my $outfile=$ARGV[1];
#open 句柄, >(覆盖写入)或者>>(追加写入), 待写入文件;
open OUT,">>",$outfile;
print OUT "$.\t$t[0]\n";#OUT绑定待写入句柄
close OUT;#关闭句柄OUT
}
close IN;#关闭句柄IN
perl in1.pl infile.txt outfile.txt
cat infile.txt#输入文档infile.txt
#testfile
a11 a12:a13 a14
a21 a22 a23
a31 a32 a33
cat outfile.txt#输出文档outfile.txt
2 a11
3 a21
5 a31
http://www.tutorialspoint.com/perl/perl_printf.htm
https://perldoc.perl.org/functions/printf.html